热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

教程|实现一套DID之总体设计之MovedApp极速入门(五)

Movedapp极速入门
Movedapp 极速入门(一)
第一个 Move dApp 极速入门(二)
操作资源 Move 极速入门(三)
Movedapp 极速入门(四)

作者:李大狗、陈俊峰

在之前的文章里,我们通过精简的方式对 MOVE 语言以及 Starcoin dApp 开发进行了快速入门。

从本篇开始,我们将通过一个实战案例更深入的讲解 MOVE 语言以及 MOVE dApp 的开发 ——这也是 MOVE 生态上的首个 DID 的实现。

0x01 DID & Verifiable Credential 科普

DID 是由 w3c 推出的数字身份协议。

Decentralized identifiers (DIDs) are a new type of identifier that enables verifiable, decentralized digital identity. A DID refers to any subject (e.g., a person, organization, thing, data model, abstract entity, etc.) as determined by the controller of the DID.

Verifiable Credential 是由 w3c 推出的可验证凭证协议。

Credentials are a part of our daily lives; driver's licenses are used to assert that we are capable of operating a motor vehicle, university degrees can be used to assert our level of education, and government-issued passports enable us to travel between countries. This specification provides a mechanism to express these sorts of credentials on the Web in a way that is cryptographically secure, privacy respecting, and machine-verifiable.

在现有的实践中,二者经常被一同实践。但实际上,这两套协议也并非绑定的,我们完全可以用 DID + SBT来替代DID + VC

0x02 设计思路

像羽毛一样轻。

一个 MVP(最小可用版本)的 DID 至少包含如下几个组成部分:

  • DID Syntax(DID 标识符)

    https://www.w3.org/TR/did-core/#did-syntax

  • DID Document in JSON(JSON 格式的 DID 描述文档)

    • Address Aggregator 地址聚合器
    • Endpoint Aggregator 终端服务聚合器

在进行任意的 dApp 实践的时候,设计者都首先要问自己一个问题:

把哪些部分放到链上?把哪些部分放到链下?

这个问题遵循一个即可:

让链上设计尽可能的轻

以 DID 为例,我们可以看到很多 DID 的实现都会把链上搞得过重。事实上,对于 MVP 版本来说,我们在链上实现如下两个模块即可:

  • Addr Aggregator:地址的增删改查
  • Endpoint Addrgator:终端服务的增删改查

然后我们会在链下实现一个 did_sdk,里面包含如下模块:

  • Contract Interactor:和链上合约进行交互
  • DID Handler:将链上数据转化为符合 w3c 标准的格式

0x03 系统架构

DID & VC based SBT 

包含如下三个层级:

  • dApp 层:一个简单的对 DID 应用的 dApp 的实现
  • VC 层:基于 SBT 的可验证凭证的实现
  • 通用 DID 层:通用 DID 的实现

0x04 文件结构

本项目持续 buidl 中,完全开源:

https://github.com/WeLightProject/DID-Solution-In-Move

文件结构如下

.
├── README.md
├── did
│   ├── Move.toml
│   ├── README.md
│   ├── build
│   ├── dapp
│   ├── release
│   └── sources
├── sbt-as-vc
│   ├── Move.toml
│   ├── README.md
│   ├── build
│   ├── dapp
│   ├── release
│   └── sources
└── did_handler
    ├── README.md
    ├── _build
    ├── deps
    ├── lib
    ├── mix.exs
    ├── mix.lock
    └── test

其中,didsbt-as-vc包含 MOVE 合约及纯前端 dApp,did_handler 是使用 elixir 语言实现的 SDK。



扫码关注公众号,回复 “1” 加入 AptosWorld 群


关注 Aptos World

发现 Web 3.0 时代新机遇


推荐阅读
  • 本文整理了一份基础的嵌入式Linux工程师笔试题,涵盖填空题、编程题和简答题,旨在帮助考生更好地准备考试。 ... [详细]
  • 本文将详细介绍如何在Android Studio中导入和编译OSChina Android 2.4版本的源码。包括所需软件、下载地址以及一些注意事项。 ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • java解析json转Map前段时间在做json报文处理的时候,写了一个针对不同格式json转map的处理工具方法,总结记录如下:1、单节点单层级、单节点多层级json转mapim ... [详细]
  • 四、作为您的 VCS 的 GitHub ... [详细]
  • SvpplyTable: 实现可扩展和可折叠的菜单动画
    SvpplyTable 是一个示例项目,旨在实现类似 Svpply 应用程序中的可扩展和可折叠的菜单动画效果。该项目托管在 GitHub 上,地址为 https://github.com/liuminqian/SvpplyTable。 ... [详细]
  • vue引入echarts地图的四种方式
    一、vue中引入echart1、安装echarts:npminstallecharts--save2、在main.js文件中引入echarts实例:  Vue.prototype.$echartsecharts3、在需要用到echart图形的vue文件中引入:   importechartsfrom"echarts";4、如果用到map(地图),还 ... [详细]
  • WCF类型共享的最佳实践
    在使用WCF服务时,经常会遇到同一个实体类型在不同服务中被生成为不同版本的问题。本文将介绍几种有效的类型共享方法,以解决这一常见问题。 ... [详细]
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • 在OpenShift上部署基于MongoDB和Node.js的多层应用程序
    本文档详细介绍了如何在OpenShift 4.x环境中部署一个包含MongoDB数据库和Node.js后端及前端的多层应用程序。通过逐步指导,读者可以轻松完成整个部署过程。 ... [详细]
  • 我有一个从C项目编译的.o文件,该文件引用了名为init_static_pool ... [详细]
  • HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送www方式的数据。HTTP协议采用了请求响应模型。客服端向服务器发送一 ... [详细]
  • 为什么多数程序员难以成为架构师?
    探讨80%的程序员为何难以晋升为架构师,涉及技术深度、经验积累和综合能力等方面。本文将详细解析Tomcat的配置和服务组件,帮助读者理解其内部机制。 ... [详细]
author-avatar
却冷了_的心_133
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有